// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package de.greenrobot.dao.query;
import android.os.Process;
import android.util.SparseArray;
import de.greenrobot.dao.AbstractDao;
import java.lang.ref.WeakReference;
// Referenced classes of package de.greenrobot.dao.query:
// AbstractQuery
abstract class AbstractQueryData
{
final AbstractDao dao;
final String initialValues[];
final SparseArray queriesForThreads = new SparseArray();
final String sql;
AbstractQueryData(AbstractDao abstractdao, String s, String as[])
{
dao = abstractdao;
sql = s;
initialValues = as;
}
protected abstract AbstractQuery createQuery();
AbstractQuery forCurrentThread()
{
int i = Process.myTid();
SparseArray sparsearray = queriesForThreads;
sparsearray;
JVM INSTR monitorenter ;
WeakReference weakreference = (WeakReference)queriesForThreads.get(i);
if (weakreference == null) goto _L2; else goto _L1
_L1:
AbstractQuery abstractquery = (AbstractQuery)weakreference.get();
_L5:
if (abstractquery != null)
{
break MISSING_BLOCK_LABEL_76;
}
gc();
abstractquery = createQuery();
queriesForThreads.put(i, new WeakReference(abstractquery));
_L3:
sparsearray;
JVM INSTR monitorexit ;
return abstractquery;
System.arraycopy(initialValues, 0, abstractquery.parameters, 0, initialValues.length);
goto _L3
Exception exception;
exception;
sparsearray;
JVM INSTR monitorexit ;
throw exception;
_L2:
abstractquery = null;
if (true) goto _L5; else goto _L4
_L4:
}
AbstractQuery forCurrentThread(AbstractQuery abstractquery)
{
if (Thread.currentThread() == abstractquery.ownerThread)
{
System.arraycopy(initialValues, 0, abstractquery.parameters, 0, initialValues.length);
return abstractquery;
} else
{
return forCurrentThread();
}
}
void gc()
{
SparseArray sparsearray = queriesForThreads;
sparsearray;
JVM INSTR monitorenter ;
int i = -1 + queriesForThreads.size();
_L2:
if (i < 0)
{
break MISSING_BLOCK_LABEL_56;
}
if (((WeakReference)queriesForThreads.valueAt(i)).get() == null)
{
queriesForThreads.remove(queriesForThreads.keyAt(i));
}
break MISSING_BLOCK_LABEL_64;
sparsearray;
JVM INSTR monitorexit ;
return;
Exception exception;
exception;
sparsearray;
JVM INSTR monitorexit ;
throw exception;
i--;
if (true) goto _L2; else goto _L1
_L1:
}
}